package com.warom.sdg.util;

import android.content.Context;
import android.os.Build;
import android.provider.Settings;
import android.util.Log;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.UUID;

/**
 * 设备工具类，提供设备相关的工具方法
 */
public class DeviceUtils {
    private static final String TAG = "DeviceUtils";

    /**
     * 获取设备唯一标识符
     * 使用多种方法组合生成相对唯一的标识
     * @param context 应用上下文
     * @return 设备唯一标识
     */
    public static String getDeviceIdentifier(Context context) {
//        return "warom123";
        try {
            // 获取设备序列号
            String serialNumber = Build.SERIAL;

            // 获取ANDROID_ID
            String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);

            // 获取构建信息
            String deviceInfo = Build.BRAND + "_" + Build.MODEL + "_" + Build.PRODUCT;

            // 创建唯一ID（使用SHA-256哈希确保隐私保护）
            String combinedInfo = serialNumber + "_" + androidId + "_" + deviceInfo;

            try {
                MessageDigest digest = MessageDigest.getInstance("SHA-256");
                byte[] hash = digest.digest(combinedInfo.getBytes(StandardCharsets.UTF_8));

                // 转换为十六进制字符串
                StringBuilder hexString = new StringBuilder();
                for (byte b : hash) {
                    String hex = Integer.toHexString(0xff & b);
                    if (hex.length() == 1) hexString.append('0');
                    hexString.append(hex);
                }

                return hexString.toString();
            } catch (NoSuchAlgorithmException e) {
                Log.e(TAG, "无法创建哈希: " + e.getMessage());
                // 如果哈希失败，使用备用组合
                return androidId + "_" + serialNumber;
            }
        } catch (Exception e) {
            Log.e(TAG, "获取设备标识符失败: " + e.getMessage());

            // 如果出现异常，返回基于时间的UUID作为备用
            return "device_" + UUID.randomUUID().toString();
        }
    }
} 